package com.service;

import com.dao.UserActPlanActivityDao;
import com.dao.UserDao;
import com.dao.actPlanDao;
import com.domain.User;
import com.domain.UserActPlanActivity;
import com.domain.actPlan;

import java.util.List;

public class userService {

    private UserDao userDao = new UserDao();
    private UserActPlanActivityDao userActPlanActivityDao = new UserActPlanActivityDao();
    private actPlanDao actPlanDao = new actPlanDao();

    /**
     * 客户登录方法
     * @param phone  String类型的客户号码
     * @param password String类型的客户密码
     * @return User类型的对象
     */
    public User loginUser(String phone, String password){
        User user = userDao.loginUser(phone, password);
        return user;
    }

    /**
     * 查询所有的客户
     * @return 返回的List类型的数据
     */
    public List<User> showAllUser(){
        List<User> list = userDao.findAllUser();
        return list;
    }

    /**
     * 客户添加方法
     * @param user 传入User类型的对象
     * @return 返回Integer类型的数据 ，1为成功，0为失败
     */
    public Integer addUser(User user){
        Integer add = userDao.addUser(user);
        return add;
    }

    /**
     * 更改客户的方法
     * @param user 传入User类型的对象
     */
    public void updateUser(User user){
        userDao.updateUser(user);
    }

    /**
     * 根据phone查询
     * @param id 传入Integer类型的客户id
     * @return 返回查询到的User类型对象
     */
    public User findUserId(Integer id){
        User user = userDao.findUser(id);
        return user;
    }

    /**
     * 按照phone 和 password查询
     * @param phone String类型的客户号码
     * @param password String类型的客户密码
     * @return 返回User类型的对象
     */
    public User findUser(String phone,String password){
        User user = userDao.findUser(phone, password);
        return user;
    }

    /**
     * 按照 userName 和 phone 查询
     * @param userName String类型的客户号码
     * @param phone String类型的客户密码
     * @return 返回User类型的对象
     */
    public User findUserNamePass(String userName,String phone){
        User user = userDao.findUserNamePass(userName, phone);
        return user;
    }

    /**
     * 根据id删除
     * @param id 传入Integer类型的客户id
     */
    public void deleteUserId(Integer id){
        actPlanDao.deleteUserAllAct(id);
        userDao.deleteUser(id);
    }

    /**
     * 根据用户id查询三个表所有的数据
     * @param userId 传入Integer类型的客户Id
     * @return 返回List类型的UserActPlanActivity数据
     */
    public List<UserActPlanActivity> AllUaPa(Integer userId){
        List<UserActPlanActivity> userActPlanActivities = userActPlanActivityDao.FindUAP(userId);
        return userActPlanActivities;
    }

    /**
     * 用活动的Id进行查询关于活动的所有数据
     * @param activityId 传入Integer类型的活动Id
     * @return 返回List类型的数据
     */
    public List<UserActPlanActivity> FindActUser(Integer activityId){
        List<UserActPlanActivity> userActPlanActivities = userActPlanActivityDao.FindActUser(activityId);
        return userActPlanActivities;
    }

    /**
     * 根据用户id和活动id进行查询
     * @param userId 传入Integer类型的客户Id
     * @param activityId 传入Integer类型的活动Id
     * @return 返回actPlan类型的对象
     */
    public actPlan findUserAct(Integer userId ,Integer activityId){
        actPlan userAct = actPlanDao.findUserAct(userId, activityId);
        return userAct;
    }

    /**
     * 修改用户参加活动的数据
     * @param acp 传入actPlan类型的对象
     */
    public void updateUserActivity(actPlan acp){
        actPlanDao.updateActPlan(acp);
    }

    /**
     * 根据用户id和活动id进行删除
     * @param userId 传入Integer类型的客户id
     * @param activityId 传入Integer类型的活动id
     */
    public void deleteUserAct(Integer userId ,Integer activityId){
        actPlanDao.deleteUserAct(userId,activityId);
    }

    /**
     * 添加用户活动的计划表actPlan
     * @param act 传入actPlan类型的对象
     * @return 返回Integer类型的数据，1为成功，0为失败
     */
    public Integer addActPlan(actPlan act){
        Integer integer = actPlanDao.addActPlan(act);
        return integer;
    }

    /**
     * 添加用户活动的计划表actPlan
     * @param userId  传入Integer类型的客户id
     * @param activityId 传入Integer类型的活动id
     * @return 返回Integer类型的数据，1为成功，0为失败
     */
    public Integer addActPlan(Integer userId,Integer activityId){
        Integer integer = actPlanDao.addActPlan(userId, activityId);
        return integer;
    }

    /**
     * 修改客户自己的号码
     * @param password String 类型的用户号码
     * @param userName String 类型的用户姓名
     * @param phone String 类型的用户电话
     * @return Integer类型的数据，1为成功，0为未成功
     */
    public Integer updateUserPass(String password ,String userName,String phone){
        Integer integer = userDao.updateUserPass(password, userName, phone);
        return integer;
    }
}
